package stack_queue.leetcode;

import java.util.Stack;

/**
 * @Author: wenjingyuan
 * @Date: 2022/09/28/9:10
 * @Description:有效的括号
 * https://leetcode.cn/problems/valid-parentheses/
 */
public class Num20 {
    public boolean isValid(String s) {
        //遍历字符串，在遍历过程中，将左括号全部入栈
        //碰到右括号就弹出栈顶元素查看是否匹配
        //将string->char数组
        Stack<Character> stack=new Stack<>();
        char[] ret=s.toCharArray();
        for(int i=0;i< ret.length;i++){
            char c=ret[i];
            //判断c是否是左括号
            if(c=='{'||c=='['||c=='('){
                stack.push(c);
            }else{
                if(stack.isEmpty()){
                    return false;
                }
                //此时c是一个右括号
                char temp=stack.pop();
                if(c=='}'&&temp!='{'){
                    return false;
                }if(c==']'&&temp!='['){
                    return false;
                }
                if(c==')'&&temp!='('){
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
}
